using System;
using System.Runtime;
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;




public struct GameNetMessage
{

	
	public enum MsgType
	{
		_MSG_RECV_LOGIN_GAMESERVICE = 2000,
		_MSG_SEND_LOGIN_GAMESERVICE,
		
		_MSG_RECV_CREATE_ACCOUNT,
		_MSG_SEND_CREATE_ACCOUNT,
		
		_MSG_RECV_CREATE_ROLE,
		_MSG_SEND_CREATE_ROLE,
		
		_MSG_RECV_ROLE_INFO,
		_MSG_SEND_ROLE_INFO,
		
		_MSG_RECV_CHAT_MSG = 3000,
		_MSG_SEND_CHAT_MSG,
		
		_MSG_RECV_MAPINFO = 4000,
		_MSG_SEND_MAPINFO,
		
		_MSG_RECV_ENTERMAP,
		_MSG_SEND_ENTERMAP,
		
		_MSG_RECV_PLAYERENTERMAP,
		_MSG_SEND_PLAYERENTERMAP,
		
		_MSG_RECV_EXITMAP,
		_MSG_SEND_EXITMAP,
		
		_MSG_RECV_MOVE,
		_MSG_SEND_MOVE,

		_MSG_RECV_MOVE_ENTER,
		_MSG_SEND_MOVE_ENTER,

		_MSG_RECV_MOVE_EXIT,
		_MSG_SEND_MOVE_EXIT,
		
		_MSG_RECV_NPCENTERMAP,
		_MSG_SEND_NPCENTERMAP,
		
		
		_MSG_RECV_JOIN_TEAM = 4500,
		_MSG_SEND_JOIN_TEAM,
		
		_MSG_RECV_LEAVE_TEAM,
		_MSG_SEND_LEAVE_TEAM,
		
		_MSG_RECV_SYN_TEAM,
		_MSG_SEND_SYN_TEAM,
		
		_MSG_RECV_SYN_MAP_TEAM,
		_MSG_SEND_SYN_MAP_TEAM,
		
		_MSG_RECV_NPC_MOVE,
		_MSG_SEND_NPC_MOVE,
		
		_MSG_RECV_ACTION = 5000,
		_MSG_SEND_ACTION,
		
		_MSG_RECV_DIRECTION,
		_MSG_SEND_DIRECTION,
		
		_MSG_RECV_BATTLE = 6000,
		_MSG_SEND_BATTLE,
		
		_MSG_RECV_BATTLE_COMMAND,
		_MSG_SEND_BATTLE_COMMAND,
		
		_MSG_RECV_BATTLE_RESULT,
		_MSG_SEND_BATTLE_RESULT,
		
		_MSG_RECV_LEVELUP_POINT = 6100,
		_MSG_SEND_LEVELUP_POINT,
		
		_MSG_RECV_SET_PET_TYPE = 7000,
		_MSG_SEND_SET_PET_TYPE,
		
		_MSG_RECV_SET_PET_NAME,
		_MSG_SEND_SET_PET_NAME,
		
		_MSG_RECV_PET_INFO,
		_MSG_SEND_PET_INFO,
		
		
		
		_MSG_RECV_SWITCH_ITEM = 8000,
		_MSG_SEND_SWITCH_ITEM,
		
		_MSG_RECV_USE_ITEM,
		_MSG_SEND_USE_ITEM,
		
		_MSG_RECV_DROP_EQUIP,
		_MSG_SEND_DROP_EQUIP,
		
		_MSG_RECV_SWITCH_EQUIP,
		_MSG_SEND_SWITCH_EQUIP,
		
		
		_MSG_RECV_TALK_NPC = 9000,
		_MSG_SEND_TALK_NPC,
		
		
		
		
	};

	
	
	public interface NetMsgInterface
	{
		
	}

	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct NetMsgHead : NetMsgInterface
	{
		public short size;
		public short type;
		
		public NetMsgHead( short s = 0 , short t = 0 )
		{
			size = s;
			type = t;
		}
		
	};  

	//////////////////////////////////////////////////////////////////////////
	//@ chat
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_RECV_MSG_CHAT_MSG : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_CHAT_MSG ) );
			head.type = (short)MsgType._MSG_SEND_CHAT_MSG;
		}

		public NetMsgHead head;
		
		public int	Type;

		public fixed byte Name[ GameDefine.MAX_NAME ];
		public fixed byte Chat[ GameDefine.MAX_CHAT_MSG ];
	};




	//////////////////////////////////////////////////////////////////////////
	//@ login
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_LOGIN_GAMESERVICE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_LOGIN_GAMESERVICE ) );
			head.type = (short)MsgType._MSG_RECV_LOGIN_GAMESERVICE;
		}

		public NetMsgHead head;

		public int		Stage;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_MSG_LOGIN_MAINSERVICE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_LOGIN_MAINSERVICE ) );
			head.type = (short)MsgType._MSG_SEND_LOGIN_GAMESERVICE;
		}

		public NetMsgHead head;

		public fixed byte Account[ 32 ];
		public fixed byte PassWord[ 32 ];

		public int		Guest;
		public float	Version;
	};

	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_CREATEACCOUNT : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_CREATEACCOUNT ) );
			head.type = (short)MsgType._MSG_RECV_CREATE_ACCOUNT;
		}

		public NetMsgHead head;
		
		public int		ErrorCode;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_CREATEACCOUNT : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_CREATEACCOUNT ) );
			head.type = (short)MsgType._MSG_SEND_CREATE_ACCOUNT;
		}

		public NetMsgHead head;

		[ MarshalAs( UnmanagedType.ByValArray , SizeConst = GameDefine.MAX_NAME ) ]
		public byte[] Account;

		[ MarshalAs( UnmanagedType.ByValArray , SizeConst = GameDefine.MAX_NAME ) ]
		public byte[] PassWord;

		public float		Version;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_CREATEROLE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_CREATEROLE ) );
			head.type = (short)MsgType._MSG_RECV_CREATE_ROLE;
		}

		public NetMsgHead head;
		
		public int		ErrorCode;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_CREATEROLE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_CREATEROLE ) );
			head.type = (short)MsgType._MSG_SEND_CREATE_ROLE;
		}

		public NetMsgHead head;

		[ MarshalAs( UnmanagedType.ByValArray , SizeConst = GameDefine.MAX_NAME ) ]
		public byte[] Name;

		public byte		Role;
		public byte		Color;
		public byte		Eye;
		public byte		Mouth;
		
		public byte		Vitality;
		public byte		Strength;
		public byte		Toughness;
		public byte		Dexterity;
		
		public byte		Earth;
		public byte		Water;
		public byte		Fire;
		public byte		Wind;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_ROLE_INFO : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_ROLE_INFO ) );
			head.type = (short)MsgType._MSG_RECV_ROLE_INFO;
		}

		public NetMsgHead head;

		public SACreatureData	Data;
		public int				Stone;
		public int				ItemNum;

		public fixed byte 		Item[ GameDefine.MAX_ITEM * 32 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_ROLEINFO : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_ROLEINFO ) );
			head.type = (short)MsgType._MSG_SEND_ROLE_INFO;
		}

		public NetMsgHead head;
	};
	


	
	//////////////////////////////////////////////////////////////////////////
	//@ map
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_MAPINFO : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_MAPINFO ) );
			head.type = (short)MsgType._MSG_RECV_MAPINFO;
		}

		public NetMsgHead	head;
		
		public int			Count;

		public fixed byte 	Data[ 10240 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_ENTERMAP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_ENTERMAP ) );
			head.type = (short)MsgType._MSG_RECV_ENTERMAP;
		}

		public NetMsgHead	head;

		public SAMapPosMsg	Pos;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_NPCENTERMAP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_NPCENTERMAP ) );
			head.type = (short)MsgType._MSG_RECV_NPCENTERMAP;
		}

		public NetMsgHead	head;
		
		public int			Count;

		public fixed byte	Npc[ GameDefine.MAX_MAP_NPC * 64 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_PLAYERENTERMAP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_PLAYERENTERMAP ) );
			head.type = (short)MsgType._MSG_RECV_PLAYERENTERMAP;
		}

		public NetMsgHead	head;

		public SAPlayerData	Data;
		
		public int			TeamCount;

		public fixed byte 	Team[ GameDefine.MAX_TEAM_CREATURE * 1024 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_EXITMAP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_EXITMAP ) );
			head.type = (short)MsgType._MSG_RECV_EXITMAP;
		}

		public NetMsgHead	head;

		public int			GUID;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_RECV_MSG_MOVE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_MOVE ) );
			head.type = (short)MsgType._MSG_SEND_MOVE;
		}

		public NetMsgHead	head;

		public int			GUID;
		public int			MapID;
		public int			Count;

		public fixed int	Path[ GameDefine.MAX_MOVE_PATH ];
	};
	

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_RECV_MSG_MOVE_ENTER : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_MOVE_ENTER ) );
			head.type = (short)MsgType._MSG_SEND_MOVE_ENTER;
		}
		
		public NetMsgHead	head;
		
		public int			GUID;
		public short		X;
		public short		Y;
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_RECV_MSG_MOVE_EXIT : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_MOVE_EXIT ) );
			head.type = (short)MsgType._MSG_SEND_MOVE_EXIT;
		}
		
		public NetMsgHead	head;
		
		public int			GUID;
	};
	

	
	
	//////////////////////////////////////////////////////////////////////////
	// action
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_RECV_MSG_ACTION : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_ACTION ) );
			head.type = (short)MsgType._MSG_SEND_ACTION;
		}

		public NetMsgHead head;

		public int			GUID;
		public int			ActionID;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_RECV_MSG_DIRECTION : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_RECV_MSG_DIRECTION ) );
			head.type = (short)MsgType._MSG_SEND_DIRECTION;
		}

		public NetMsgHead head;
		
		public int		GUID;
		public int		Direction;
	};
	
	
	//////////////////////////////////////////////////////////////////////////
	// battle
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_BATTLE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_BATTLE ) );
			head.type = (short)MsgType._MSG_SEND_BATTLE;
		}

		public NetMsgHead head;
		
		public int		Type;
		public int		ID;
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_BATTLE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_BATTLE ) );
			head.type = (short)MsgType._MSG_RECV_BATTLE;
		}

		public NetMsgHead head;

		public SAMapPosMsg	Pos;
		
		public byte		PVP;
		public byte		Side;
		public byte		PetNum;
		public byte		EnemyNum;
		public byte		EnemyPetNum;

		public fixed byte Data[ 2048 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_BATTLE_COMMAND : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_BATTLE_COMMAND ) );
			head.type = (short)MsgType._MSG_SEND_BATTLE_COMMAND;
		}

		public NetMsgHead head;

		public SACreatureFightCommand	Command;
		public SACreatureFightCommand	PetCommand;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_BATTLE_RESULT : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_BATTLE_RESULT ) );
			head.type = (short)MsgType._MSG_RECV_BATTLE_RESULT;
		}

		public NetMsgHead head;

		public byte	Turn;
		public byte	Result;
		public byte	Num;

		public fixed byte Data[ 2048 ];
	};
	
	
	//////////////////////////////////////////////////////////////////////////
	// level up

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_LEVELUP_POINT : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_LEVELUP_POINT ) );
			head.type = (short)MsgType._MSG_RECV_LEVELUP_POINT;
		}

		public NetMsgHead head;
		
		public int PointType;
	};
	
	
	
	
	//////////////////////////////////////////////////////////////////////////
	// team

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_JOIN_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_SEND_JOIN_TEAM;
		}

		public NetMsgHead head;
		
		public int	GUID;
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_JOIN_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_RECV_JOIN_TEAM;
		}

		public NetMsgHead head;

		public int	GUID;
		public SATeamPlayer	Player;
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_SYN_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_RECV_SYN_TEAM;
		}

		public NetMsgHead head;

		public int Count;

		public fixed byte Data[ 1024 ];
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_LEAVE_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_SEND_LEAVE_TEAM;
		}

		public NetMsgHead head;

		public int	GUID;
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_LEAVE_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_RECV_LEAVE_TEAM;
		}

		public NetMsgHead head;

		public int	GUID;
	};

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_SYN_MAP_TEAM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_RECV_SYN_MAP_TEAM;
		}

		public NetMsgHead head;

		public int		Count;

		public fixed int Data[ 128 ];
	};
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_NPC_MOVE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_JOIN_TEAM ) );
			head.type = (short)MsgType._MSG_RECV_NPC_MOVE;
		}

		public NetMsgHead head;

		public int		ID;
		public int		Fall;
		
		public short	X;
		public short	Y;
	};
	
	//////////////////////////////////////////////////////////////////////////
	// pet
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_SET_PET_TYPE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_SET_PET_TYPE ) );
			head.type = (short)MsgType._MSG_SEND_SET_PET_TYPE;
		}

		public NetMsgHead head;

		public int	ID;
		public int	PetType;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_SET_PET_TYPE : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_SET_PET_TYPE ) );
			head.type = (short)MsgType._MSG_RECV_SET_PET_TYPE;
		}

		public NetMsgHead head;
		
		public int	ID;
		public int	PetType;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct SEND_MSG_SET_PET_NAME : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_SET_PET_NAME ) );
			head.type = (short)MsgType._MSG_SEND_SET_PET_NAME;
		}

		public NetMsgHead head;

		public int	ID;
		public fixed byte Name[ 32 ];
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_GET_PET : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_GET_PET ) );
			head.type = (short)MsgType._MSG_SEND_PET_INFO;
		}

		public NetMsgHead head;

		public int	GUID;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_PET_INFO : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_PET_INFO ) );
			head.type = (short)MsgType._MSG_RECV_PET_INFO;
		}

		public NetMsgHead head;

		public int	Count;

		public fixed byte Data[ GameDefine.MAX_TEAM_PET * 1024 ];
	};
	
	
	//////////////////////////////////////////////////////////////////////////
	// item,
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_SWITCH_ITEM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_SWITCH_ITEM ) );
			head.type = (short)MsgType._MSG_SEND_SWITCH_ITEM;
		}

		public NetMsgHead head;

		public short	i1;
		public short	i2;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_SWITCH_EQUIP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_SWITCH_EQUIP ) );
			head.type = (short)MsgType._MSG_SEND_SWITCH_EQUIP;
		}

		public NetMsgHead head;

		public short	i1;
		public short	i2;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_USE_ITEM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_USE_ITEM ) );
			head.type = (short)MsgType._MSG_SEND_USE_ITEM;
		}

		public NetMsgHead head;

		public short	i;
		public short	t;
		
		public int		p;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct RECV_MSG_USE_ITEM : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_USE_ITEM ) );
			head.type = (short)MsgType._MSG_RECV_USE_ITEM;
		}

		public NetMsgHead head;

		public SACreatureBaseData Base;
	};
	
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_DROP_EQUIP : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_DROP_EQUIP ) );
			head.type = (short)MsgType._MSG_SEND_DROP_EQUIP;
		}

		public NetMsgHead head;

		public short	i1;
		public short	i2;
	};
	
	
	
	
	
	//////////////////////////////////////////////////////////////////////////
	// npc
	
	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public unsafe struct RECV_MSG_TALK_NPC : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.RECV_MSG_TALK_NPC ) );
			head.type = (short)MsgType._MSG_RECV_TALK_NPC;
		}

		public NetMsgHead head;

		public int	ID;
		public int	Type;
		public int	Mode;

		public fixed byte Data[ 1024 ];
	};
	

	[ StructLayout( LayoutKind.Sequential , Pack = 1 ) ]
	public struct SEND_MSG_TALK_NPC : NetMsgInterface
	{
		public void initNetHead()
		{
			head.size = (short)Marshal.SizeOf( typeof( GameNetMessage.SEND_MSG_TALK_NPC ) );
			head.type = (short)MsgType._MSG_SEND_TALK_NPC;
		}

		public NetMsgHead head;

		public int	ID;
		public int	State;
		public int	Select;
	};
	

}